The present invention relates generally to proxy servers, and in particular to apparatus and methods for implementing a transparent proxy server.
A computer equipped with a communication mechanism, such as a modem and telephone connection, is all that is necessary to access to the Internet. A program on the computer, called a Web browser, e.g., Netscape Navigator from Netscape Corporation, provides a simple user interface for accessing the vast body of information available on the Internet and, specifically, its subpart known as the “World Wide Web.”
The architecture of the Web follows a conventional client-server model. The terms Web client and Web server refer to using a computer as a requester of Web data (the client) and using a computer as a provider of the requested Web data (the server). An origin server is a particular type of Web server that stores data requested by a client. A common form of Web data is specially-formatted documents stored on an origin server. For example, HyperText Markup Language (HTML) is an often-used format.
A Web browser resides on each client and is used to request the specially-formatted documents from origin servers. Clients and origin servers communicate using packets having a protocol called HyperText Transfer Protocol (HTTP). Each HTTP packet has fields identifying the source of the packet, the destination of the packet, and possibly other data or information depending on the type of packet.
In a typical session between a client and origin server the client opens a connection to the origin server and initiates a request, such as a request for a document. The client initiates opening the connection by sending a synchronization (SYN) packet to the origin server. The origin server completes setting up the connection by sending an acknowledgment (ACK) packet to the client.
The client then sends a request packet to the origin server. The origin server responds to the request packet by performing the request. For example, in response to a request for an object the origin server retrieves the object, such as a Web document, and transmits the Web document to the client. After the document is delivered to the client, the connection is closed. The client displays the document or performs a function designated by the document.
One variation of this model uses a second type of server, a proxy server, which is an intermediary server between a client and an origin server. The proxy server receives packets from the client, and handles communications with the origin server on behalf of the client. For example, if the client requests information, the proxy server requests the information from the origin server on behalf of the client, receives the requested information, and forwards the requested information to the client.
Some proxy servers provide added services, such as caching. Caching involves storing information frequently requested from origin servers. The information is stored in a temporary, and typically fast, memory device at the proxy server. If the proxy server receives a client request for information contained in the proxy server cache, the proxy server retrieves the requested information from the proxy server cache and transmits it to the client. This eliminates the typical delay of requesting the information from the origin server and waiting for the information, and also reduces traffic on the network.
Using a proxy server, however, requires configuring the client by storing the proxy server Internet protocol (IP) address in the client browser. The client browser sends packets to the proxy server by placing the proxy server IP address in the destination field of the packet. Configuring a client browser is cumbersome because someone must set the IP address of the proxy server in the client browser. Setting the IP address may be difficult, particularly for the uninitiated. Consequently, proxy servers are generally only used in settings having someone with an understanding of how to store the proxy server IP address in the client browser. For example, proxy servers are sometimes used when there is a network administrator who can configure each browser with the IP address of a proxy server.
Thus, a need exists for a proxy server that allows a client to take advantage of the benefits of using a proxy server in handling client packets without requiring special configuration of the client.